/*******************************************************************************
 * Copyright (c) 2011 - 2012 TXT e-solutions SpA
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * This work was performed within the IoT_at_Work Project
 * and partially funded by the European Commission's
 * 7th Framework Programme under the research area ICT-2009.1.3
 * Internet of Things and enterprise environments.
 *
 *
 * Authors:
 *     Cristoforo Seccia (TXT e-solutions SpA)
 *
 * Contributors:
 *      Domenico Rotondi (TXT e-solutions SpA)
 *******************************************************************************/
package it.txt.access.capability.revocation.wizard;

/**
 *
 * @author Cristoforo Seccia (TXT e-solutions SpA)
 */
public abstract class WizardPanelDescriptor {

    public static final String UNKNOW_PANEL_ID = "UNDEFINED";
    
    public static final String FINISH_PANEL_ID = "FINISH";

    private final int myOrdinalNumber;

    private final Wizard myWizard;
    
    private final int completedPercentage;

    public WizardPanelDescriptor(Wizard wizard, int ordinalNumber, int wizardLength){
        myWizard = wizard;
        myOrdinalNumber = ordinalNumber;
        completedPercentage = (int) Math.floor((100 * (ordinalNumber)) / (wizardLength - 1));
    }

    protected final Wizard getWizard(){
        return myWizard;
    }

    public final int getWizardPanelOrdinalNumber(){
        return myOrdinalNumber;
    }

    protected int getCompletedPercentage () {
        return completedPercentage;
    }
    
    /*
     * The descriptor identifier.
     */
    public abstract String getIdentifier();

    /*
     * The forwarding descriptor cannot be null.
     */
    public abstract String getNextIdentifier();

    /*
     * The backward identifier may be null; in this case
     * the Wizard uses the stored "previouse descriptor".
     */
    public abstract String getBackIdentifier();

    /*
     * The panel controller.
     */
    public abstract WizardPanelController getPanelController();

    /*
     * The panel name used in the left panel of the wizard.
     */
    public abstract String getCanonicalName();

    /*
     * The panel request confirm to go forward.
     */
    public abstract boolean isUserConfirmationRequired();
}
